package com.example.controller;


import com.example.Pojo.Dept;
import com.example.Pojo.Result;
import com.example.anno.Log;
import com.example.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//在这里添加了@RequestMapping("/depts")之后下面的一些信息注解信息里面就不用再写/depts
//因为注解的内容是公共的,请求路径都是一样的
//注 释
//注 释
//注 释
//注 释

@RequestMapping("/depts")
@RestController
@Slf4j
public class DeptController {

    //利用日志记录框架来记录日志
    //这里定义一个固定代码
    //private static Logger logger = LoggerFactory.getLogger(DeptController.class);
    @Autowired
    private DeptService deptService;

    //查询部门全部信息
    //@RequestMapping(value = "/depts", method = RequestMethod.GET) //指定请求方式为GET   这种方式比较繁琐
    //下方为简化的请求方式
    @GetMapping
    public Result list() {
        //通过日志输出
        log.info("查询全部部门数据");
        //List<Dept> deptList = deptMapper.selectAll();

        //调用service查询部门数据
        List<Dept> deptList = deptService.list();
        return Result.success(deptList);
    }

    @Log
    //删除部门信息
    @DeleteMapping("{id}")
    public Result delete(@PathVariable Integer id) throws Exception {
        log.info("根据id删除部门信息:{}", id);
        deptService.delete(id);
        return Result.success();
    }


    @Log
    //新增部门信息
    @PostMapping
    public Result insertDept(@RequestBody Dept dept) {
        log.info("新增部门:" + dept.getName());
        deptService.insert(dept);
        return Result.success();
    }

    //根据id查询部门信息
    @GetMapping("{id}")
    public Result selectOne(@PathVariable Integer id) {
        log.info("查询部门信息:" + id);
        Dept dept = deptService.selectOne(id);
        return Result.success(dept);
    }


    @Log
    //修改部门信息
    @PutMapping
    public Result updateDept(@RequestBody Dept dept) {
        log.info("修改部门信息");
        deptService.update(dept);
        return Result.success();
    }

}
